The Senior-Level Software Engineer is responsible for developing and supporting the individual components within an application. They will coach and mentor less experienced software engineers and will often lead code reviews. Work is expected to be completed correctly and quickly with little-to-no supervision or assistance needed. Success in this position will largely be determined by the ability to help other software engineers improve and by the ability to lead technical efforts within the team and the department.
Job Duties and Responsibilities:
Development (45%):
- Review and analyze existing application effectiveness and efficiency. Develop strategies for improving or leveraging these systems.
- Design, build, and implement new applications, web pages, and websites; integrating sites with back-end applications; migrating legacy applications to the web; and performing day-to-day administration of the organization's web portfolio.
- Work in collaboration with a team to develop strategies for improving or leveraging existing systems.
- Analyze and prioritize front-end backlog tasks for in-development applications.
- Work in collaboration with a team to research and make recommendations on software products and services in support of procurement and development efforts.
Communications (15%):
- Collaborate with developers, analysts, designers, and system owners in the testing of new software programs and applications.
- Work directly with the product and scrum teams to make sure all requirements are met and work is being completed in a satisfactory amount of time
- Communicate with middle managers of other departments to make sure expectations are set and met
Mentoring (15%):
- Work closely with less experienced developers to make sure they have the support they need to be successful
- Perform code reviews with the goal of creating better developers, not just validating the functionality of the code
Architecture (15%):
- For smaller projects and modifications, design the architecture needed for a software product
- For larger projects, work closely with the architecture team, specifically the Software Architect, to assist in designing robust, clean and scalable software solutions
- Engage with the architects to become more familiar with newer technologies
Research and Risk Management (10%):
- Conduct research and make recommendations on software products and services in support of procurement and development efforts.
- Updates job knowledge by studying state-of-the-art development tools, programming techniques, and computing equipment, and by participating in educational opportunities, reading professional publications, etc.
- Documents and demonstrates solutions by developing documentation, flowcharts, layouts, diagrams, charts, code comments, and clear code.
Qualifications (Education, Experience, Certifications & KSA):
- High School Diploma required
- Bachelor's degree in Computer Science or a related field preferred
- 5-7 years of Software Engineering experience required
- Extensive (5-7 years) proficiency working with most of the following technologies required:
- C# (or some other object-oriented language)
- JavaScript frameworks (React, Node.js, Angular, Vue.js)
- Cloud Services (AWS, Azure, GCP)
- Web services (RESTful and/or SOAP)
- .NET Core
- MVC
- Windows / Worker services
- DevOps including CI/CD
- SQL
- Pega
- NoSQL databases
- Extensive understanding of the software development lifecycle (SDLC)
- Ability to create flow diagrams for software products
- Expert knowledge of database design and file management techniques
- Extensive understanding of Agile concepts
- Develop reusable software building blocks to enable faster delivery
- Experience with relational databases
- Highly self-motivated and self-directed. Experience working in a team-oriented, collaborative environment
- Ability to communicate ideas in both technical and user-friendly language
- Ability to conduct research into application development issues and products
- Able to work in a team-oriented, collaborative environment
- Collaborate with stakeholders (e.g. business stakeholders, product owners, project managers, and end users) to understand functional and non-functional requirements
- Investigate and propose solutions to development and design problems